#!/bin/bash


# config
#port_number=6379
port_number=6380




# 获取当前脚本所在目录
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
REDIS_DIR="$SCRIPT_DIR/../0801-redis"

# 进入redis目录
cd "$REDIS_DIR" || { echo "无法进入redis目录: $REDIS_DIR"; exit 1; }

# 找到并解压 .tar.gz 文件
TAR_GZ_FILE=$(ls *.tar.gz 2>/dev/null)
if [ -z "$TAR_GZ_FILE" ]; then
  echo "在 $REDIS_DIR 目录下未找到 .tar.gz 文件"
  exit 1
fi
tar -xzf "$TAR_GZ_FILE" || { echo "解压失败"; exit 1; }

# 获取解压后的目录名（假设只有一个解压目录）
EXTRACTED_DIR=$(ls -d */)
cd "$EXTRACTED_DIR" || { echo "无法进入解压后的目录: $EXTRACTED_DIR"; exit 1; }

# 进入bin目录
cd bin || { echo "无法进入bin目录"; exit 1; }

# 检查6379端口是否被占用
if netstat -tuln | grep -q ':$port_number '; then
  # 端口被占用，尝试ping redis-cli
  RESPONSE=$(./redis-cli ping 2>/dev/null)
  if [ "$RESPONSE" == "PONG" ]; then
    echo "Redis服务已经启动"
  else
    echo "请手动修改端口号再次执行"
    exit 1
  fi
else
  # 端口未被占用，启动redis-server
  ./redis-server ../etc/redis.conf &> /dev/null &
  sleep 2  # 等待redis-server启动

  # 再次ping redis-cli
  RESPONSE=$(./redis-cli ping 2>/dev/null)
  if [ "$RESPONSE" == "PONG" ]; then
    echo "redis已启动成功"
  else
    echo "redis启动失败，请排查"
    exit 1
  fi
fi